/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Server;

import Common.Message;
import java.util.LinkedList;
import java.util.List;

/**
 * Class intended to be the server of the Simple Email System
 *
 * @author Wilson Rolando Crespo Omonte
 */
public class MailServer {

    List<UserMessages> userMessages;

    public MailServer() {
        this.userMessages = new LinkedList<>();
    }

    public MailServer(String user) {
        this();
        this.userMessages.add(new UserMessages(user));
    }
/**
 * retorna el numero de mensajes que tiene el usuario
 * @param name , nombre del usuario
 * @return result numero a enviar
 */
    public int getMessagesWaiting(String name) {
        int result = 0;
        for (UserMessages userMessages1 : userMessages) {
            if (userMessages1.user.equalsIgnoreCase(name)) {
                result = userMessages1.messages.size();
            }
        }
        return result;
    }
/**
 * obtiene el siguiente mensaje 
 * @param name , usuario del que obtiene el mensaje
 * @return mensaje
 */
    public Message getNextMessage(String name) {
        Message result = null;
        for (UserMessages userMessages1 : userMessages) {
            if (userMessages1.user.equalsIgnoreCase(name)) {
                result = userMessages1.messages.remove(0);
            }
        }
        return result;
    }
/**
 * 
 * @param message ,nuevo mensaje a enviar
 */
    public void post(Message message) {
        for (UserMessages userMessages1 : userMessages) {
            if (userMessages1.user.equalsIgnoreCase(message.getReceiver())) {
                userMessages1.messages.add(message);
            }
        }
    }

    /**
     * este metodo añade un nuevo usuario
     * {@link UserMessages usermessages} list
     *
     * @param user, nombre de usuario a añadir
     * 
     */
    public void addUser(String user) {
        if (this.userMessages == null) {
            this.userMessages = new LinkedList<>();
        }
        boolean found = false;
        for (UserMessages userMessages1 : userMessages) {
            if (userMessages1.user.equalsIgnoreCase(user)) {
                found = true;
            }
        }
        if (!found) {
            this.userMessages.add(new UserMessages(user));
        }
    }
}
